package com.dingteam.question.common.enums;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.Objects;
import java.util.stream.Collectors;

/**
 * 控件的类型枚举
 * @author Jamin
 * @date 2019/06/27
 */
@Slf4j
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public enum ModuleEnum {

	/** 单选 */
	RADIO(0, "radio", ResultType.OPTION, true),

	/** 多选 */
	CHECKBOX(1, "checkbox", ResultType.OPTION, true),

	/** 文本 */
	TEXT(2, "text", ResultType.TEXT, true),

	/** 段落说明 */
	PARAGRAPH_DESCRIPTION(3, "paragraph_description", ResultType.NONE, false),

	/** 分割线 */
	SPLIT_LINE(4, "split_line", ResultType.NONE, false),

	/** 图片 */
	IMAGE(5, "image", ResultType.NONE, false),

	/** 人员选择 */
	STAFF(6, "staff", ResultType.OPTION, true),

	/** 文本投票 */
	VOTE_TEXT(7, "vote_text", ResultType.OPTION, true),

	/** 图文投票 */
	VOTE_IMG_TEXT(8, "vote_img_text", ResultType.OPTION, true),

	/** 手机号 */
	TELEPHONE(9, "telephone", ResultType.TEXT, true),

	/** 邮箱 */
	EMAIL(10, "email", ResultType.TEXT, true),

	/** 数字类型 */
	NUMBER(11, "number", ResultType.TEXT, true),

	/** 单选下来框 */
	RADIO_SELECT(12, "radio_select", ResultType.OPTION, true),

	/** 图片单选多选 */
	IMG_SELECT(13, "img_select", ResultType.OPTION, true),
	;

	/** 标识代号 */
	private Integer code;

	/** 别名 */
	private String alias;

	/** 结果数据的类型 */
	private ResultType type;

	/** 是否是题目 true 是 false 不是 */
	private boolean subject;

	/**
	 * 根据别名获取枚举类型
	 * @param alias 控件类型的别名前端传值
	 * @return 枚举类型
	 */
	public static ModuleEnum valueOfAlias(String alias) {
		for (ModuleEnum value : ModuleEnum.values()) {
			if (value.getAlias().equals(alias)) {
				return value;
			}
		}
		throw new IllegalArgumentException("alias illegal" + alias);
	}

	
	public enum ResultType {
		/** 选项类结果类型 */
		OPTION,
		/** 问答类 */
		TEXT,
		/** 无结果类 */
		NONE,
	}
}
